1. Field of the Invention
The invention relates generally to computer systems and more particularly to systems and methods for enabling dynamic optimization of the configuration of individual processors within a multiprocessor system.
2. Related Art
As computer-related technologies have developed, there has always been a desire for increased speed and processing capacity. These desires are somewhat counterbalanced by a need to reduce the power that is required to provide the increased processing performance.
Various features have been implemented in an effort to achieve increases in performance in these areas. One of the most obvious and straightforward approaches to increasing the computing capabilities of a computer system is to increase the clock speed and the corresponding number of instructions that can be executed by the system. Another, less often implemented approach is to increase the number of processors that are utilized by the computer system. A computer system that uses more than one processor may be referred to as a multiprocessor system.
A multiprocessor computer system may be implemented in a number of ways, but, generally speaking, the goal of a multiprocessor approach is to distribute the program instructions that would have been executed by a single processor in a single-processor system among the two or more processors in the multiprocessor system. By distributing the instructions among the multiple processors, the workload of each processor is reduced, and the number of instructions that can be executed by the computer system in a given amount of time is increased in comparison to a single-processor system.
Multiprocessor systems may be useful in applications such as multimedia applications. For example, some consumer electronics devices are designed to process multimedia data for presentation to a user. This data may include various different types of data, such as WAV audio, MP3 audio, MPEG video, and so on. Multiprocessor systems may also be useful in game systems, which may be required to perform a substantial amount of arithmetic processing in addition to the conversion of the audio and video data to output audio and video signals. Because of the many different types of data that may need to be processed by these systems, it may be useful to configure certain ones of the processors so that they are optimized for processing certain types of data. Some of the processors may therefore perform more optimally than others when the same type of data is being processed by all of the processors. Which ones of the processors perform optimally depends upon the type of data being processed.
In conventional multiprocessor systems, the configuration of each of the processors in the system must be determined when the system is initialized. The configurations of the processors cannot be modified without stopping the system and reinitializing. Thus, it is necessary to determine a single configuration for each of the processors based on the data that is expected to be processed. Typically, the different processors will be configured to perform optimally with several different types of data so that, whatever type of data is being processed, a certain (typically smaller) subset of the processors will perform more optimally, while another (typically larger) subset will perform sub-optimally. The system therefore rarely, if ever, performs optimally with respect to all, or even most, of the processors. The overall sub-optimal performance of the system is manifested in various ways, including reduced processing efficiency (less data is processed) and increased power consumption (more power is required by sub-optimal configurations to process comparable amounts of data.)
There is therefore a need to provide means for improving the performance of multiprocessor systems, both in terms of the processing capabilities of the system, and in terms of the power consumption of the system.